.card-wrapper {
  .image {
    display: block;
  }

  .card-copy {
    background-color: $colorLightBeige;
    display: flex;
    flex-direction: column;
  }

  &-course-card {
    width: 230px;
    height: 314px;
    position: relative;

    .image {
      position: absolute;
      top: 0;
    }

    .card-copy {
      position: absolute;
      top: 152px; // card-height - margin-offset 40px
      padding: 12px 35px;
      width: 230px;
      height: 140px;
      @include cut-left-corner(19px);
      align-items: start;
      justify-content: space-evenly;

      .card-title {
        @include truncate();
      }
    }
  }

  &-exhibition-listing-card {
    position: relative;
    @include size(232px, 281px);

    .image {
      @include cut-right-corner(29px);
      @include size(232px, 220px);
    }

    .card-copy {
      // Forcing position and height for flexbox to keep full height
      position: absolute;
      top: calc(220px - 40px);
      bottom: 0;
      left: 0;
      right: 0;
      padding: 0 35px;
      @include cut-left-corner(19px);
      justify-content: center;

      .card-title {
        @include truncate();
        margin-bottom: 8px;
      }

      .card-location {
        display: inline-flex;
        align-items: center;
        font-size: $paragraph;
        color: $colorExhib;
        .location-icon {
          @include size(12px, 16px);
        }
      }
    }
  }

  &-talklisting-card {
    width: 315px;
    display: flex;
    flex-direction: column;

    .image {
      @include cut-right-corner(29px);
      flex: 0 0 auto;
      width: 100%;
    }

    .card-copy {
      flex: 1 0 auto;
      margin-top: -40px;
      padding: 20px 37px;
      width: 100%;
      @include cut-left-corner(19px);
      align-items: start;
      justify-content: space-evenly;

      .card-tag,
      .card-title {
        margin-bottom: 8px;
      }

      .card-title {
        @include truncate;
        font-size: 20px; // non-standard -> may change
      }

      .date-range {
        font-family: $notoSans;
        font-size: 12px; // non-standard -> may change
      }
    }
  }

  &-recommendation-mixed {
    $width: 150px;
    $height: 227px;
    @include size($width, $height);

    .image {
      @include size($width, 150px);
      @include cut-right-corner(20px);
    }

    .card-copy {
      @include size($width, calc($height - $width));
    }

    .card-title {
      @include truncate();
      margin: 6px 0 5px 0;
    }

    .card-price {
      font-family: $notoSans;
    }
  }

  &-product-card,
  &-product-card-short {
    font-size: $paragraph;

    .card-title {
      @include truncate();
    }

    .card-price {
      font-family: $notoSans;
      display: flex;
      justify-content: flex-end;
      color: $colorVulcan;
    }

    .card-copy {
      @include size(167px, 77px);
      padding: 8px 10px 8px 8px;
      justify-content: space-between;
    }
  }

  &-product-card {
    @include size(167px, 327px);

    .image {
      @include size(167px, 251px);
    }

    &-short {
      @include size(167px, 247px);
      .image {
        @include size(167px, 167px);
      }
    }
  }

  // Note - need to fill available space - relying on outside dimensions
  &-course-card-tall {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;

    .image {
      @include cut-right-corner(29px);
      flex: 1 1 auto;
      width: 100%;
    }

    .card-copy {
      margin-top: -40px;
      padding: 35px 14px 35px 37px;
      width: 100%;
      @include cut-left-corner(19px);

      .card-tag-info-container {
        display: flex;
        align-items: flex-end;
        justify-content: space-between;
        margin-bottom: 15px;

        .click-indication {
          display: inline-flex;
          align-items: center;

          .link-text {
            @include link-text;
          }

          .chevron-viking {
            @include size(7px, 12px);
            margin-left: 4px;
          }
        }
      }

      .card-title {
        @include truncate(3);
        font-size: 20px; // non-standard -> may change
        margin-bottom: 15px;
        padding-right: 23px; // Design change, 37-14px
      }

      .card-price {
        font-size: 16px; // non-standard -> may change
        margin-bottom: 15px;
      }

      .date {
        font-family: $notoSans;
        font-size: 12px; // non-standard -> may change
        display: flex;
        height: 44px;
        gap: 10px;
        &-left {
          color: $colorGrey;
        }
        &-right {
          display: flex;
          flex-direction: column;
          justify-content: space-around;
        }
      }
    }
  }

  &-vertical-list-card,
  &-vertical-list-card-spread,
  &-vertical-list-card-center {
    padding: 20px 0;
    display: flex;
    gap: 30px;

    .image {
      @include cut-right-corner(19px);
      @include size(137px, 120px);
      flex: 0 0 auto;
    }

    .card-copy {
      display: flex;
      flex-direction: column;
    }

    .card-title {
      @include truncate;
      color: $colorDark;
      font-size: $title;
      margin: 7px 0;
    }

    .card-tag-info-container {
      display: flex;
      align-items: center;

      .card-info {
        margin-left: 10px;
        font-size: $title-s;
        line-height: 1;
      }
    }

    .date {
      font-family: $notoSans;
      color: $colorGrey;
      font-size: $title-s;
    }

    .card-price {
      font-size: $title;
    }

    .waiting-list-text {
      color: $colorDisc;
      font-family: $notoSans;
      font-size: $title-s;
    }
  }

  &-vertical-list-card {
    .card-copy {
      justify-content: space-around;
    }
  }

  &-vertical-list-card-center {
    .card-copy {
      justify-content: center;
    }
  }

  &-vertical-list-card-spread {
    .card-copy {
      justify-content: space-between;
    }
  }
}
